# 项目:CS
# 文件:UIcs
# 作者:DYQ
# 日期: 2025/5/20-下午3:07
# coding:utf-8
#导入 Selenium 的 webdriver 模块，用于控制浏览器
from selenium import webdriver
# 导入时间模块（控制等待）和随机模块（随机选择选项）
import time,random
#导入动作链（模拟键盘鼠标操作）和键盘按键。
from selenium.webdriver import ActionChains, Keys
#导入 Select 类，用于处理下拉列表。
from selenium.webdriver.support.select import Select

def get_driver():
    # 创建 Edge 浏览器驱动实例。
    driver = webdriver.Edge()
    # 设置隐式等待 5 秒，元素查找时自动等待直到出现。
    driver.implicitly_wait(5)
    # 最大化浏览器窗口。
    driver.maximize_window()
    # 返回配置好的驱动对象。
    return driver

 # 参数：要输入的元素、要输入的值
def input(element, value):
    #点击元素
    element.click()
    # 清空输入框原有内容（避免干扰）
    element.clear()
    # 向输入框发送指定文本（模拟用户输入）
    element.send_keys(value)

#参数：下拉列表元素
def select_random_first(element):
    # 获取下拉列表的所有选项数量（通过Select类包装元素）
    options_count = len(Select(element).options)
    # 生成随机索引
    random_index = random.randint(1, options_count-1)
    # 根据随机索引选择下拉选项（模拟用户随机选择）
    Select(element).select_by_index(random_index)

# 脚本入口（当直接运行此文件时执行以下代码）
if __name__ == '__main__':
    # 调用函数初始化浏览器（启动Edge并最大化窗口）
    driver = get_driver()
    # 打开登录页面
    driver.get('http://localhost:8080/YunDuanBoss/login/')
    # 通过name属性定位用户名输入框
    uname = driver.find_element('name', 'userName')
    # 调用input函数，在用户名输入框输入"dyq123"
    input(uname,'dyq123')
    # 通过name属性定位密码输入框
    upass = driver.find_element('name', 'userPass')
    # 调用input函数，在密码输入框输入"YunDuan123"
    input(upass, 'YunDuan123')
    # 通过CSS选择器定位登录按钮并点击（提交登录表单）
    driver.find_element('css selector', '#form-login > div > div > div.modal-footer > button').click()
    # 强制等待3秒（等待登录完成，页面跳转）
    time.sleep(3)

    # 打开资产管理主页面
    driver.get('http://localhost:8080/YunDuanBoss/assets')
    # 定位"添加资产"按钮并点击
    driver.find_element('css selector', '#content > div.row.con-margin.con-body-con > div:nth-child(1) > div > button:nth-child(1)').click()

    #定位设备名称下拉列表
    assets_name = driver.find_element('css selector','#addAss-form > div > div > div:nth-child(1) > div:nth-child(1) > select')
    # 调用函数随机选择一个设备名称
    select_random_first(assets_name)
    # 定位型号下拉列表
    assets_type = driver.find_element('css selector','#addAss-form > div > div > div:nth-child(1) > div:nth-child(2) > span:nth-child(2) > select')
    # 调用函数随机选择一个型号
    select_random_first(assets_type)

    # 定位条码输入框
    barcode = driver.find_element('css selector','#addAss-form > div > div > div:nth-child(2) > div:nth-child(1) > input')
    # 调用input函数输入条码值
    input(barcode, '44444444444')

    # 定位价格输入框
    price = driver.find_element('css selector','#addAss-form > div > div > div:nth-child(2) > div.col-md-6.col-sm-6.form-group > input')
    # 调用input函数输入价格
    input(price, '800')

    # 定位采购员工输入框（支持自动完成）
    purchase_employee = driver.find_element('css selector','#addAss-form > div > div > div:nth-child(3) > div:nth-child(1) > input.text.autoEmpId')
    # 输入"张倩"（触发自动完成建议）
    input(purchase_employee, '超级管理员')
    # 等待自动完成建议加载
    time.sleep(2)
    # 模拟键盘按下"下箭头"
    ActionChains(driver).send_keys(Keys.DOWN).perform()
    # 等待建议项选中
    time.sleep(2)
    # 模拟键盘按下"回车"（确认选择）
    ActionChains(driver).send_keys(Keys.ENTER).perform()
    # 等待选择完成
    time.sleep(2)
    # 点击日期输入框
    driver.find_element('css selector','#addAss-form > div:nth-child(1) > div:nth-child(1) > div:nth-child(3) > div:nth-child(2) > input:nth-child(2)').click()
    # 等待日期选择器加载
    time.sleep(2)
    # 定位日期选择器中的"今天"按钮并点击
    driver.find_element('css selector','div.datetimepicker:nth-child(21) > div:nth-child(3) > table:nth-child(1) > tfoot:nth-child(3) > tr:nth-child(1) > th:nth-child(1)').click()
    # 定位资产所有者下拉列表
    owner = driver.find_element('css selector','#addAss-form > div > div > div:nth-child(4) > div:nth-child(2) > select')
    # 调用函数随机选择一个所有者
    select_random_first(owner)
    time.sleep(2)
    # 定位"提交"按钮并点击
    driver.find_element('css selector', '#addAss > div:nth-child(1) > div:nth-child(1) > div:nth-child(3) > button:nth-child(1)').click()
    time.sleep(3)
    # 打开领用登记主页面
    driver.get('http://localhost:8080/YunDuanBoss/borrow')
    # 定位"新增"按钮并点击
    driver.find_element('css selector','#content > div.row.con-margin.con-body-con > div.col-lg-12.col-md-12.col-xs-12.con-body-padding.text-left > div > button').click()
    # 定位条码输入框
    barcode = driver.find_element('css selector','#addBor-form > div > div > div:nth-child(1) > div.col-md-6.col-sm-6.form-group > input')
    # 调用input函数输入条码值
    input(barcode, '44444444444')
    # 定位类型名称下拉列表
    false_type = driver.find_element('css selector','#addBor-form > div > div > div:nth-child(1) > div:nth-child(2) > select')
    #调用函数随机选择一个设备名称
    select_random_first(false_type)
    # 定位领用人输入框
    purchase_employee = driver.find_element('css selector','#addBor-form > div > div > div:nth-child(2) > div:nth-child(1) > input.text.autoEmpId')
    # 调用input函数输入领用人
    input(purchase_employee, '超级管理员')
    time.sleep(3)
    # 定位"确认保存"按钮并点击
    driver.find_element('css selector', '#addAssBtn').click()
    time.sleep(3)





